package ar.com.age.distribuidora.presentacion.loader;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import ar.com.age.distribuidora.dominio.Administrador;
import ar.com.age.distribuidora.dominio.Cheque;
import ar.com.age.distribuidora.dominio.Cliente;
import ar.com.age.distribuidora.dominio.Elemento;
import ar.com.age.distribuidora.dominio.Empleado;
import ar.com.age.distribuidora.dominio.EntregaCheque;
import ar.com.age.distribuidora.dominio.EntregaEfectivo;
import ar.com.age.distribuidora.dominio.EstadoCheque;
import ar.com.age.distribuidora.dominio.ListaDePrecio;
import ar.com.age.distribuidora.dominio.Localidad;
import ar.com.age.distribuidora.dominio.Marca;
import ar.com.age.distribuidora.dominio.Producto;
import ar.com.age.distribuidora.dominio.Proveedor;
import ar.com.age.distribuidora.dominio.TipoIva;
import ar.com.age.distribuidora.dominio.TipoProducto;
import ar.com.age.distribuidora.dominio.TipoRubro;
import ar.com.age.distribuidora.dominio.UnidadMedida;
import ar.com.age.distribuidora.dominio.Vendedor;
import ar.com.age.distribuidora.presentacion.util.ServiceLocator;
import ar.com.age.distribuidora.service.ChequeService;
import ar.com.age.distribuidora.service.ClienteService;
import ar.com.age.distribuidora.service.DatosClienteService;
import ar.com.age.distribuidora.service.DatosProductoService;
import ar.com.age.distribuidora.service.EntregaService;
import ar.com.age.distribuidora.service.ListaDePrecioService;
import ar.com.age.distribuidora.service.LocalidadService;
import ar.com.age.distribuidora.service.ProductoService;
import ar.com.age.distribuidora.service.ProveedorService;
import ar.com.age.distribuidora.service.UsuarioService;
import ar.com.age.distribuidora.service.VendedorService;

public class CargarDB {

	public static void cargar() {
		
		System.out.println("Cargando el servicio...");
		ClienteService servicioCliente = ServiceLocator.getClienteService();
		System.out.println("Servicio Cargado...");

		
		// Cliente
		Cliente c= new Cliente();
		c.setApellido("Espinosa");
		c.setNombre("Gustavo");
		c.setCodigo("c");
		c.setComentario("compra los sabados");
		c.setCuit("27-29566323-7");
		c.setRazonSocial("GustavoRZ");
		c.setSaldo(10.55);
		servicioCliente.crearOEditar(c);
		System.out.println("Se creo el usuario:"+c.getApellido());
		/*
		LocalidadService localidadService= ServiceLocator.getLocalidadService();
		System.out.println(" sin cargar  los servicios");
		*/
	}

	public static void cargarAdministrador() {
		
		UsuarioService servicioUsuario = ServiceLocator.getUsuarioService();
		LocalidadService localidadService = ServiceLocator.getLocalidadService();
		
		Localidad localidad2 = new Localidad();
		localidad2.setCodigoArea("0342");
		localidad2.setNombre("Santa Fe");
		localidad2.setProvincia("Santa Fe");
		localidad2.setEstado("Activo");

		localidadService.crearOEditar(localidad2);
		
		Administrador admin = new Administrador();
		admin.setApellido("Picotto");
		admin.setNombre("Ignacio");
		admin.setCodigo("ignaciopicotto");
		admin.setContrasenia("111");
		admin.setEstado("Activo");
		admin.setTipoUsuario("A");
		
		servicioUsuario.crearOEditarAdministrador(admin);
	}
	
	public static void eliminarAdministrador() {
		
		UsuarioService servicioUsuario = ServiceLocator.getUsuarioService();
		
		Administrador admin = new Administrador();
		admin = servicioUsuario.buscarAdministrador("123", "", "", "").get(0);
		servicioUsuario.eliminarAdministrador(admin);
	}
	
	public static void cargarLocalidad() {
		
		LocalidadService localidadService = ServiceLocator.getLocalidadService();
		
//		Localidad localidad = new Localidad();
//		localidad.setCodigoArea("03483");
//		localidad.setNombre("Rafaela");
//		localidad.setProvincia("Santa Fe");
//		localidad.setEstado("Activo");
//
//		localidadService.crearOEditar(localidad);
		
		Localidad localidad2 = new Localidad();
		localidad2.setCodigoArea("03483");
		localidad2.setNombre("Esperanza");
		localidad2.setProvincia("Santa Fe");
		localidad2.setEstado("Activo");

		localidadService.crearOEditar(localidad2);
	}

	@SuppressWarnings("deprecation")
	public static void cargarDatos() {
		
		LocalidadService localidadService = ServiceLocator.getLocalidadService();
		Localidad localidad = new Localidad();
		localidad.setCodigoArea("0342");
		localidad.setNombre("Santa Fe");
		localidad.setProvincia("Santa Fe");
		localidad.setEstado("Activo");
		localidadService.crearOEditar(localidad);
		
		Administrador admin = new Administrador();
		admin.setApellido("123");
		admin.setNombre("123");
		admin.setCodigo("123");
		admin.setContrasenia("123");
		admin.setEstado("Activo");
		admin.setTipoUsuario("A");
		UsuarioService servicioUsuario = ServiceLocator.getUsuarioService();
		servicioUsuario.crearOEditarAdministrador(admin);

		DatosProductoService datosProductoService = ServiceLocator.getDatosProductoService();
		UnidadMedida unidad = new UnidadMedida();
		unidad.setNombre("Kilogramos");
		unidad.setUnidad("Kg");
		unidad.setDominio("Double");
		datosProductoService .crearOEditarUnidadMedida(unidad);
		
		Marca marca = new Marca();
		marca.setNombre("Frutos del campo");
		marca.setDescripcion("Lacteos de San Carlos");
		datosProductoService.crearOEditarMarca(marca);
		
		TipoProducto tipoProsucto = new TipoProducto();
		tipoProsucto.setNombre("Lacteo");
		datosProductoService.crearOEditarTipoProducto(tipoProsucto);

		DatosClienteService datosClienteService = ServiceLocator.getDatosClienteService();
		TipoRubro tipoRubro = new TipoRubro();
		tipoRubro.setRubro("Mayorista");
		datosClienteService.crearOEditarTipoRubro(tipoRubro);
		
		TipoIva tipoIva = new TipoIva();
		tipoIva.setIva("Responsable");
		datosClienteService.crearOEditarTipoIva(tipoIva);
		
		ChequeService chequeService = ServiceLocator.getChequeService();
		EstadoCheque estadoCheque= new EstadoCheque();
		estadoCheque.setEstado("Dentro de la empresa");
		chequeService .crearOEditarEstadoCheque(estadoCheque);
		
		////
		Proveedor proveedor = new Proveedor();
		proveedor.setApellido("Messi");
		proveedor.setCodigo("liomessi");
		proveedor.setComentario("Comenratio messi");
		proveedor.setDireccion("San Martin 966");
		proveedor.setEmpresa("Sancoro SA");
		proveedor.setNombre("Lionel");
		proveedor.setTelefono("4562358");
		proveedor.setLocalidad(localidad);
		ProveedorService proveedorService = ServiceLocator.getProveedorService();
		proveedorService .crearOEditar(proveedor);

		////
		Vendedor vendedor = new Vendedor();
		vendedor.setApellido("Aguero");
		vendedor.setCodigo("kunaguero");
		vendedor.setComentario("Comenratio kun");
		vendedor.setDireccion("Las Heras 966");
		vendedor.setNombre("Sergio");
		vendedor.setTelefono("4562358");
		vendedor.setLocalidad(localidad);
		VendedorService vendedorService = ServiceLocator.getVendedorService();
		vendedorService.crearOEditar(vendedor);

		/////

		Empleado empleado = new Empleado();
		empleado.setApellido("Picotto");
		empleado.setNombre("Ignacio");
		empleado.setCodigo("ignaciopicotto");
		empleado.setContrasenia("123");
		empleado.setEstado("Activo");
		empleado.setComentario("aaa");
		empleado.setTipo("Venta");
		empleado.setDireccion("456");
		empleado.setTelefono("222");
		empleado.setLocalidad(localidad);

		servicioUsuario.crearOEditarEmpleado(empleado);

		/////
		Producto producto = new Producto();
		producto.setCodigo("manteca");
		producto.setNombre("Manteca");
		producto.setEstado("Disponible");
		producto.setMarca(marca);
		producto.setTipoProducto(tipoProsucto);
		producto.setUnidadMedida(unidad);
		List<Proveedor> lista = new ArrayList<Proveedor>();
		lista.add(proveedor);
		producto.setProveedores(lista);
		ProductoService productoService = ServiceLocator.getProductoService();
		productoService.crearOEditar(producto);
		
		Producto producto2 = new Producto();
		producto2.setCodigo("lecheentera");
		producto2.setNombre("Leche Entera");
		producto2.setEstado("Disponible");
		producto2.setMarca(marca);
		producto2.setTipoProducto(tipoProsucto);
		producto2.setUnidadMedida(unidad);
		producto2.setProveedores(lista);
		productoService.crearOEditar(producto2);
		
		/////
		ListaDePrecioService listaDePrecioService = ServiceLocator.getListaDePrecioService();
		ListaDePrecio listadePreciosMayorista= new ListaDePrecio();
		listadePreciosMayorista.setCodigo("listaMayoristas");
		Date inicioVigencia = new Date();
		listadePreciosMayorista.setIncioVigencia(inicioVigencia);
		Date finVigencia = new Date();
		finVigencia.setDate(4);
		finVigencia.setMonth(3);
		finVigencia.setYear(114);
		listadePreciosMayorista.setFinVigencia(finVigencia);
		listadePreciosMayorista.setNombre("Lista Mayoristas");
		
		Elemento e1= new Elemento();
		e1.setPrecioVenta(25.0);
		e1.setProducto(producto);
		
		listaDePrecioService.crearOEditarElemento(e1);
		List<Elemento> elementos= new ArrayList<Elemento>();
		elementos.add(e1);
		listadePreciosMayorista.setElementos(elementos);
		listaDePrecioService.crearOEditarListaDePrecio(listadePreciosMayorista);
		
		/////
		Cliente c1 = new Cliente();
		c1.setApellido("Valdez");
		c1.setCodigo("don ramon");
		c1.setComentario("Comentario don ramon");
		c1.setCuit("27-20562147-7");
		c1.setNombre("Ramon");
		c1.setRazonSocial("La martita");
		c1.setSaldo(0.0);
		c1.setTipoIva(tipoIva);
		c1.setTipoRubro(tipoRubro);
		c1.setLocalidad(localidad);
		c1.setListadePrecio(listadePreciosMayorista);
	
		ClienteService clienteService = ServiceLocator.getClienteService();
		clienteService .crearOEditar(c1);
		
		////
		Cheque cheque = new Cheque();
		cheque.setApellido("Gonzalez");
		cheque.setBanco("Santander");
		cheque.setComentario("Por pago de deuda");
		cheque.setCuenta("147ABD");
		cheque.setMonto(2500.0);
		cheque.setNombre("Jorqe");
		cheque.setNumero("cheque111");
		cheque.setSerie("123654");
		cheque.setSucursal("Santa Fe");
		
		Date fechaDeposito = new Date();
		fechaDeposito.setDate(04);
		fechaDeposito.setMonth(03);
		fechaDeposito.setYear(101);
		cheque.setFechaDeposito(fechaDeposito);
		cheque.setEstadoCheque(estadoCheque);
		chequeService.crearOEditarCheque(cheque);
		
		Cheque cheque2 = new Cheque();
		cheque2.setApellido("Gonzalez");
		cheque2.setBanco("Santander");
		cheque2.setComentario("Por pago de deuda");
		cheque2.setCuenta("147ABD");
		cheque2.setMonto(5000.0);
		cheque2.setNombre("Jorqe");
		cheque2.setNumero("cheque222");
		cheque2.setSerie("123654");
		cheque2.setSucursal("Santa Fe");
		
		Date fechaDeposito2 = new Date();
		fechaDeposito2.setDate(04);
		fechaDeposito2.setMonth(03);
		fechaDeposito2.setYear(101);
		cheque2.setFechaDeposito(fechaDeposito2);
		cheque2.setEstadoCheque(estadoCheque);
		chequeService.crearOEditarCheque(cheque2);
		
		////
		EntregaEfectivo entregaEfectivo = new EntregaEfectivo();
		entregaEfectivo.setEstado("Activa");
		entregaEfectivo.setCliente(c1);
		entregaEfectivo.setCodigo("entregaEfectivo111");
		entregaEfectivo.setMontoActual(1000.0);
		entregaEfectivo.setMontoInicial(1000.0);
		
		Date fechaEntrega = new Date();
		fechaEntrega.setDate(4);
		fechaEntrega.setMonth(3);
		fechaEntrega.setYear(113);
		entregaEfectivo.setFechaEntrega(fechaEntrega);
		
		EntregaService entregaService = ServiceLocator.getEntregaService();
		entregaService.crearOEditarEntregaEfectivo(entregaEfectivo);
		
		EntregaCheque entregaCheque = new EntregaCheque();
		entregaCheque.setEstado("Activa");
		entregaCheque.setCheque(cheque);
		entregaCheque.setCliente(c1);
		entregaCheque.setCodigo("entregaCheque111");
		Date fechaEntrega2 = new Date();
		fechaEntrega2.setDate(4);
		fechaEntrega2.setMonth(3);
		fechaEntrega2.setYear(113);
		entregaCheque.setFechaEntrega(fechaEntrega2);
		entregaService.crearOEditarEntregaCheque(entregaCheque);
		
		// 
//		LoteDeCompraService loteService = ServiceLocator.getLoteDeCompraService();
//		LoteDeCompra lote = new LoteDeCompra();
//		lote.setCantidadActual(2000.0);
//		lote.setCantidadDeCompra(2000.0);
//		lote.setCodigo("lote111");
//		lote.setEstado("Disponible");
//		lote.setFechaVencimiento(new Date());
//		lote.setPrecioDeCompra(25.5);
//		lote.setProducto(producto);
//		loteService.crearOEditar(lote);
//		
//		LoteDeCompra lote2 = new LoteDeCompra();
//		lote2.setCantidadActual(1500.0);
//		lote2.setCantidadDeCompra(1500.0);
//		lote2.setCodigo("lote222");
//		lote2.setEstado("Disponible");
//		lote2.setFechaVencimiento(new Date());
//		lote2.setPrecioDeCompra(10.5);
//		lote2.setProducto(producto2);
//		loteService.crearOEditar(lote2);
		
		
	}

	
	public static void main(String[] args) {
		
		cargarDatos();
		//eliminarAdministrador();
		//cargarLocalidad();
		//cargarDatos();
		
		System.out.println("Carga Finalizada!!!");
	}
	


}
